﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Work8
{
    class Program
    {
        static void Main(string[] args)
        {
            //引用参数 ref
            Refclass refclass = new Refclass();

            //调用带有引用参数的方法时，实际参数必须是一个变量，并且在传值时必须加上关键字 ref
            int x = 20;  //x为实参

            bool result = refclass.Judge(ref x);  //使用关键字 ref 可以通过对形参赋值改变实参的结果
            Console.WriteLine(x);

            Console.WriteLine("验证结果为:{0}",result);
            Console.WriteLine();


            string s = "张三";
            Console.WriteLine(s);
            refclass.JudgeAth(s);  //未使用关键字 ref ,不能通过对形参赋值改变实参的结果
            Console.WriteLine(s);
            Console.WriteLine();





            //输出参数 out   输出参数多用于一个方法需要返回多个值的情况


            //var为一个语法堂，可用于替换多数变量名
            //var outclass = new Outclass();  形式一

            Outclass outclass = new Outclass(); //形式二

            //在调用含有带输出参数的方法时，必须在传递参数时使用关键字 out ,但不必给输出参数赋值
            outclass.JudgeSth(9, out bool rs);  //内联变量bool rs，这里不必给输出参数rs赋值
            Console.WriteLine("结果为:{0}",rs);
            Console.WriteLine();





            //嵌套类的调用
            Nestedclass.Inner inner = new Nestedclass.Inner
            {
                CardId = "256293",
                Password = "2356gfj87"
            };

            inner.PrintMsg();

            Nestedclass.Inner.OutPrice(2020);  //嵌套类中静态成员的调用
            Console.WriteLine();





            //部分类的调用
            Partialclass partialclass = new Partialclass
            {
                Id = 666,
                Title = "丛林之王",
                Points = 99.998
            };

            partialclass.PrintInfo();

            partialclass.SetMsg();  //调用了没有方法体的 SetInfo 方法
        }

    }
}
